/// <summary>** BEGIN LICENSE BLOCK *****
/// Version: LGPL 3
/// 
/// Copyright 2008 David Cumps <david@cumps.be>
/// 
/// This file is part of ArmoryLib2.
///
/// ArmoryLib is free software: you can redistribute it and/or modify
/// it under the terms of the GNU Lesser General Public License as published by
/// the Free Software Foundation, either version 3 of the License, or
/// (at your option) any later version.
///
/// ArmoryLib is distributed in the hope that it will be useful,
/// but WITHOUT ANY WARRANTY; without even the implied warranty of
/// MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
/// GNU Lesser General Public License for more details.
///
/// You should have received a copy of the GNU Lesser General Public License
/// along with ArmoryLib2.  If not, see <http://www.gnu.org/licenses/>.
/// **** END LICENSE BLOCK ****
/// </summary>
using System;

using ArmoryLib2.Character.MeleeDetail;

namespace ArmoryLib2.Character
{
    public class Melee
    {
        private MainHand _mainHand;
        public MainHand MainHand
        {
            get { return _mainHand; }
            private set { _mainHand = value; }
        }

        private OffHand _offHand;
        public OffHand OffHand
        {
            get { return _offHand; }
            private set { _offHand = value; }
        }

        private AttackPower _attackPower;
        public AttackPower AttackPower
        {
            get { return _attackPower; }
            private set { _attackPower = value; }
        }

        private Hit _hit;
        public Hit Hit
        {
            get { return _hit; }
            private set { _hit = value; }
        }

        private Crit _crit;
        public Crit Crit
        {
            get { return _crit; }
            private set { _crit = value; }
        }

        private Expertise _expertise;
        public Expertise Expertise
        {
            get { return _expertise; }
            private set { _expertise = value; }
        }

        internal Melee(MainHand mainHand,
                       OffHand offHand,
                       AttackPower attackPower,
                       Hit hit,
                       Crit crit,
                       Expertise expertise)
        {
            MainHand = mainHand;
            OffHand = offHand;
            AttackPower = attackPower;
            Hit = hit;
            Crit = crit;
            Expertise = expertise;
        }

        public override string ToString()
        {
            return string.Format("MainHand: {1}{0}" +
                                 "OffHand: {2}{0}" +
                                 "AttackPower: {3}{0}" +
                                 "Hit: {4}{0}" +
                                 "Crit: {5}{0}" +
                                 "Expertise: {6}{0}",
                                 Environment.NewLine,
                                 MainHand,
                                 OffHand,
                                 AttackPower,
                                 Hit,
                                 Crit,
                                 Expertise);
        }
    }
}
